package schema

import (
	"errors"
)

// Enterprise 企业管理
type Enterprise struct {
	ID              int64    `json:"id" bson:"_id" structs:"id"`                                          // 唯一标识(自增ID)
	RecordID        string   `json:"record_id" bson:"record_id" structs:"record_id"`                      // 记录内码(uuid)
	Name            string   `json:"name" bson:"name" structs:"name"`                                     // 企业名称
	Category        string   `json:"category" bson:"category" structs:"category"`                         // 行业类别
	Contacter       string   `json:"contacter" bson:"contacter" structs:"contacter"`                      // 企业联系人
	ContactTel      string   `json:"contact_tel" bson:"contact_tel" structs:"contact_tel"`                // 联系电话
	Address         string   `json:"address" bson:"address" structs:"address"`                            // 企业地址
	EntryTime       int64    `json:"entry_time" bson:"entry_time" structs:"entry_time"`                   // 入驻时间(时间戳)
	MigrationTime   int64    `json:"migration_time" bson:"migration_time" structs:"migration_time"`       // 迁出时间(时间戳)
	BuildingNodeID  []string `json:"building_node_id" bson:"building_node_id" structs:"building_node_id"` //企业入驻的门牌，即建筑门牌节点的id
	BusinessLicense string   `json:"business_license" bson:"business_license" structs:"business_license"` // 营业执照
	EnterpriseMark  string   `json:"enterprise_mark" bson:"enterprise_mark" structs:"enterprise_mark"`    //1:企业2:商店
	Logo            string   `json:"logo" bson:"logo" structs:"logo"`                                     // 企业Logo
	Introduction    string   `json:"introduction" bson:"introduction" structs:"introduction"`             // 企业简介
	IsPanel         int      `json:"is_panel" bson:"is_panel" structs:"is_panel"`                         // 企业展板(1:开通)
	IsHot           int      `json:"is_hot" bson:"is_hot" structs:"is_hot"`                               // 是否热门(1:热门)
	Status          int      `json:"status" bson:"status" structs:"status"`                               // 状态(1:正常 2:迁出)
	Creator         string   `json:"creator" bson:"creator" structs:"creator"`                            // 创建人
	Created         int64    `json:"created" bson:"created" structs:"created"`                            // 创建时间戳
	Deleted         int64    `json:"deleted" bson:"deleted" structs:"deleted"`                            // 删除时间戳
}

// Validate 验证参数
func (a *Enterprise) Validate() error {
	if a.Name == "" ||
		a.Category == "" ||
		a.Contacter == "" ||
		a.ContactTel == "" ||
		a.EntryTime == 0 ||
		a.Address == "" {
		return errors.New("无效的请求参数")
	}
	return nil
}

// EnterpriseParkHistory 企业门牌历史
type EnterpriseParkHistory struct {
	ID           int64  `json:"id" bson:"_id" structs:"id"`                                 // 唯一标识(自增ID)
	EnterpriseID string `json:"enterprise_id" bson:"enterprise_id" structs:"enterprise_id"` // 企业ID
	ParkID       string `json:"park_id" bson:"park_id" structs:"park_id"`                   // 门牌ID
	Operate      string `json:"operate" bson:"operate" structs:"operate"`                   // 操作
	Memo         string `json:"memo" bson:"memo" structs:"memo"`                            // 备注
	Creator      string `json:"creator" bson:"creator" structs:"creator"`                   // 创建人
	Created      int64  `json:"created" bson:"created" structs:"created"`                   // 创建时间戳
}

// EnterpriseQueryParam 企业管理查询参数
type EnterpriseQueryParam struct {
	Name               string   // 企业名称
	Category           []string // 行业类别
	Contacts           string   // 企业联系人
	ContactTel         string   // 联系电话
	Address            string   // 企业地址
	EntryTimeStart     int64    // 入驻时间开始(时间戳)
	EntryTimeEnd       int64    // 入驻时间(时间戳)
	MigrationTimeStart int64    // 迁出时间(时间戳)
	MigrationTimeEnd   int64    // 迁出时间(时间戳)
	IsHot              int      // 是否热门(1:热门)
	Status             int      // 状态(1:正常 2:迁出)
}

// EnterpriseMobileQueryParam 企业管理移动端查询参数
type EnterpriseMobileQueryParam struct {
	LastID   int64
	Category string
	IsHot    int
	Name     string
}

// EnterpriseMobileQueryResult 企业管理移动端查询结果
type EnterpriseMobileQueryResult struct {
	ID           int64  `json:"id" bson:"_id" structs:"id"`                              // 唯一标识(自增ID)
	RecordID     string `json:"record_id" bson:"record_id" structs:"record_id"`          // 记录内码(uuid)
	Name         string `json:"name" bson:"name" structs:"name"`                         // 企业名称
	Logo         string `json:"logo" bson:"logo" structs:"logo"`                         // 企业Logo
	Introduction string `json:"introduction" bson:"introduction" structs:"introduction"` // 企业简介
	IsPanel      int    `json:"is_panel" bson:"is_panel" structs:"is_panel"`             // 企业展板(1:开通)
}

// EnterpriseSelectParam 企业管理选择数据查询参数
type EnterpriseSelectParam struct {
	Name string // 企业名称
}

// EnterpriseSelect 企业管理选择数据
type EnterpriseSelect struct {
	RecordID string `json:"record_id" bson:"record_id" structs:"record_id"` // 记录内码(uuid)
	Name     string `json:"name" bson:"name" structs:"name"`                // 企业名称
}

// EnterHistoryQueryParam 门牌历史管理功能使用
type EnterHistoryQueryParam struct {
	BuildingNodeID string `json:"building_node_id" bson:"building_node_id"` //建筑节点id：record_id
	StartTime      int64  `json:"start_time" bson:"start_time"`             //查询的开始时间
	EndTime        int64  `json:"end_time" bson:"end_time"`                 //查询的结束时间
	PageIndex      uint   `json:"page_index" bson:"page_index"`             //查询的列表页码
	PageSize       uint   `json:"page_size" bson:"page_size"`               //查询的列表页码大小
}

// ServiceUpdateParams 更新参数结构
type ServiceUpdateParams struct {
	Contacter    string `json:"contacter" bson:"contacter" structs:"contacter"`          // 企业联系人
	ContactTel   string `json:"contact_tel" bson:"contact_tel" structs:"contact_tel"`    // 联系电话
	Address      string `json:"address" bson:"address" structs:"address"`                // 企业地址
	Introduction string `json:"introduction" bson:"introduction" structs:"introduction"` // 企业简介
}

// Validate 参数校验方法
func (a *ServiceUpdateParams) Validate() error {
	return nil
}

// ResultOfParkHistory 返回数据结构
type ResultOfParkHistory struct {
	ID             int64  `json:"id" bson:"_id"`
	EnterpriseID   string `json:"enterprise_id" bson:"enterprise_id"`
	ParkID         string `json:"park_id" bson:"park_id"`
	Operate        string `json:"operate" bson:"operate"`
	Memo           string `json:"memo" bson:"memo"`
	Creator        string `json:"creator" bson:"creator"`
	Created        int64  `json:"created" bson:"created"`
	ParkNodeName   string `json:"park_node_name" bson:"park_node_name"`
	UserName       string `json:"user_name" bson:"user_name"`
	EnterpriseName string `json:"enterprise_name" bson:"enterprise_name"`
}
